home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / vmTypes.h < prev    next >
C/C++ Source or Header  |  1991-03-02  |  6KB  |  174 lines

  1. /*
  2.  * vmTypes.h --
  3.  *
  4.  *    Type declarations for user VM interface.
  5.  *
  6.  * Copyright 1991 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that this copyright
  10.  * notice appears in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /sprite/src/lib/include/RCS/vmTypes.h,v 1.1 91/03/01 22:12:25 kupfer Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _VMTYPESUSER
  19. #define _VMTYPESUSER
  20.  
  21. #include <sprite.h>
  22.  
  23.  
  24. /*
  25.  * The different commands to give to Vm_Cmd.  For more details on these
  26.  * options look at the man page for vmcmd.
  27.  *
  28.  *    VM_SET_CLOCK_PAGES        Set the number of pages to check on
  29.  *                    each iteration of the clock algorithm
  30.  *    VM_SET_CLOCK_INTERVAL        Set how many seconds between iterations
  31.  *                    of the clock algorithm.
  32.  *    VM_SET_MAX_DIRTY_PAGES        Set the maximum number of dirty pages
  33.  *                    to check before waiting for clean 
  34.  *                    memory.
  35.  *    VM_DO_COPY_IN            Time Vm_CopyIn.
  36.  *    VM_DO_COPY_OUT            Time Vm_CopyOut.
  37.  *    VM_DO_MAKE_ACCESS_IN        Time Vm_MakeAccessible.
  38.  *    VM_DO_MAKE_ACCESS_OUT        Time Vm_MakeAccessible.
  39.  *    VM_SET_COPY_SIZE            Set the number of bytes to move when
  40.  *                    using the previous 4 commands.
  41.  *    VM_GET_STATS            Return vm stats.
  42.  *    VM_SET_PAGEOUT_PROCS        Set the number of processes used 
  43.  *                    to clean memory.
  44.  *    VM_SET_COW            Set the flags which determines whether
  45.  *                    to use copy-on-write or not.
  46.  *    VM_COUNT_DIRTY_PAGES        Determine how many pages in memory
  47.  *                    are dirty.
  48.  *    VM_SET_FREE_WHEN_CLEAN        Set the flag which determines whether
  49.  *                    to free memory after it is cleaned.
  50.  *    VM_FLUSH_SEGMENT            Flush a segment from memory.
  51.  *    VM_SET_FS_PENALTY            Set the file system penalty .
  52.  *    VM_SET_NUM_PAGE_GROUPS        Set the number of pages groups to 
  53.  *                    divide memory into when calculating
  54.  *                    the penalty.
  55.  *    VM_SET_ALWAYS_REFUSE        Always refuse file system requests for
  56.  *                    memory.
  57.  *    VM_SET_ALWAYS_SAY_YES        Always satisfy file system request for
  58.  *                    memory if possible.
  59.  *    VM_RESET_FS_STATS            Clear out the min and max size of
  60.  *                    the file system cache kept in the
  61.  *                    vm stat structure.
  62.  *    VM_SET_COR_READ_ONLY        Set the flag which determines if pages
  63.  *                    that are copied because of copy-on-ref
  64.  *                    faults are marked read-only.
  65.  *    VM_SET_PREFETCH            Turn prefetch on or off.
  66.  *    VM_SET_USE_FS_READ_AHEAD        Say whether to use the file systems
  67.  *                    read-ahead to help out vm paging.
  68.  *    VM_START_TRACING            Start virtual memory tracing.
  69.  *    VM_END_TRACING            Stop virtual memory tracing.
  70.  *    VM_SET_WRITEABLE_PAGEOUT        Set flag which forces all writeable
  71.  *                    pages to be written out to swap when
  72.  *                    they are recycled whether they are
  73.  *                    dirty or not.
  74.  *    VM_SET_WRITEABLE_REF_PAGEOUT    Set flag which forces all writeable
  75.  *                    pages that have been referenced to be
  76.  *                    written out to swap when they are 
  77.  *                    recycled whether they are dirty or not.
  78.  */
  79. #define VM_SET_CLOCK_PAGES        0
  80. #define VM_SET_CLOCK_INTERVAL        1
  81. #define VM_SET_MAX_DIRTY_PAGES        4
  82. #define VM_DO_COPY_IN            5
  83. #define VM_DO_COPY_OUT            6
  84. #define VM_DO_MAKE_ACCESS_IN        7
  85. #define VM_DO_MAKE_ACCESS_OUT        8
  86. #define VM_SET_COPY_SIZE        9
  87. #define VM_GET_STATS            10
  88. #define VM_SET_PAGEOUT_PROCS        11
  89. #define VM_FORCE_SWAP            12
  90. #define VM_SET_COW            13
  91. #define VM_COUNT_DIRTY_PAGES        14
  92. #define VM_SET_FREE_WHEN_CLEAN        15
  93. #define VM_FLUSH_SEGMENT        16
  94. #define VM_SET_FS_PENALTY        17
  95. #define VM_SET_NUM_PAGE_GROUPS        18
  96. #define VM_SET_ALWAYS_REFUSE        19
  97. #define VM_SET_ALWAYS_SAY_YES        20
  98. #define VM_RESET_FS_STATS        21
  99. #define VM_SET_COR_READ_ONLY        22
  100. #define VM_SET_PREFETCH            23
  101. #define VM_SET_USE_FS_READ_AHEAD    24
  102. #define VM_START_TRACING        25
  103. #define VM_END_TRACING            26
  104. #define    VM_SET_WRITEABLE_PAGEOUT    27
  105. #define    VM_SET_WRITEABLE_REF_PAGEOUT    28
  106.  
  107. /*
  108.  * The first allowable machine dependent command.
  109.  */
  110. #define    VM_FIRST_MACH_CMD        50
  111.  
  112. /*
  113.  * Number of segments
  114.  */
  115.  
  116. #define    VM_NUM_SEGMENTS        4
  117.  
  118. /*
  119.  * The type of segment.
  120.  */
  121. #define VM_SYSTEM    0
  122. #define VM_CODE        1
  123. #define VM_HEAP        2
  124. #define VM_STACK    3
  125. #define VM_SHARED    4
  126.  
  127.  
  128. /*
  129.  * Length of the object file name that is embedded in each segment table
  130.  * entry.
  131.  */
  132. #define    VM_OBJ_FILE_NAME_LENGTH    50
  133.  
  134. /*
  135.  * Implementation independent definition of segment ids.
  136.  */
  137.  
  138. typedef int Vm_SegmentID;
  139.  
  140. /*
  141.  * Segment information. Add any new fields to the end of the structure.
  142.  */
  143.  
  144. typedef struct Vm_SegmentInfo {
  145.     int            segNum;        /* The number of this segment. */
  146.     int         refCount;    /* Number of processes using this 
  147.                      * segment */
  148.                         /* Name of object file for code 
  149.                      * segments. */
  150.     char        objFileName[VM_OBJ_FILE_NAME_LENGTH];
  151.     int               type;        /* CODE, STACK, HEAP, or SYSTEM */
  152.     int            numPages;    /* Explained in vmInt.h. */
  153.     int            ptSize;        /* Number of pages in the page table */
  154.     int            resPages;    /* Number of pages in physical memory
  155.                      * for this segment. */
  156.     int            flags;        /* Flags to give information about the
  157.                      * segment table entry. */
  158.     int            ptUserCount;    /* The number of current users of this
  159.                      * page table. */
  160.     int            numCOWPages;    /* Number of copy-on-write pages that
  161.                      * this segment references. */
  162.     int            numCORPages;    /* Number of copy-on-ref pages that
  163.                      * this segment references. */
  164.     Address        minAddr;    /* Minimum address that the segment
  165.                      * can ever have. */
  166.     Address        maxAddr;    /* Maximium address that the segment
  167.                      * can ever have. */
  168.     int            traceTime;    /* The last trace interval that this
  169.                      * segment was active. */
  170. } Vm_SegmentInfo;
  171.  
  172.  
  173. #endif /* _VMTYPESUSER */
  174.